package cn.tedu.basic;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;

//测试 ArrayList，底层维护的是一个object数组结构
public class Test1_ArrayList {
    public static void main(String[] args) {
        //创建对象
        //jdk1.6在创建ArrayList对象时，自动创建了10个容量的数组。均为null
        //jdk1.8在调用add（）时，创建10个容量的数组，均为null
        //容量不够，自动扩容
        ArrayList al =new ArrayList();
        //调用方法
        //有序，可重复，可存多个null
        al.add(18);
        al.add(19);
        al.add(20);
        al.add(21);
        al.add(22);
        al.add(null);
        System.out.println(al);
        al.add(22);
        al.add(23);
        al.add(18);
        System.out.println(al);
        al.add(null);
        System.out.println(al);
        //有下标，可迭代
        Iterator it = al.iterator();
        while (it.hasNext()){
           Object a = it.next();
            System.out.println(a);
        }
        //子类方法可正向迭代也可逆向迭代
        ListIterator it1 =al.listIterator();
        while (it1.hasNext()){
            Object b=it1.next();
            System.out.println(b);
        }
        while (it1.hasPrevious()){
            Object b1 =it1.previous();
            System.out.println(b1);
        }
        //for循环迭代
        for (int i = 0; i <al.size() ; i++) {
            Object c =al.get(i);
            System.out.println(c);
        }

       for(Object d : al){
           System.out.println(d);
       }
       ArrayList ar =new ArrayList();
       ar.add(10);
       ar.add(1.1);
       ar.add("hello");
       ar.add(true);
        System.out.println(ar);
        //模拟ArrayList储存数据
        ArrayList arl =new ArrayList();
        int n =0;
        Object[] ob =new Object[10];
        ob[0]=10;
        ob[n++]=1.1;
        ob[n++]="hello";
        ob[n++]=true;
        if (n>ob.length){
            Arrays.copyOf(ob,100);
        }
        System.out.println(ob);
    }
}
